/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package cinemak9.modelo;

import cinemak9.util.Conexao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author denilson
 */
public class Salas {
    private int numero;
    private String nome;
    private int quantidadeLugares;
    private float tamanhoPolegadas;
    private boolean tipoTela;
    private String acessibilidade;
    
    public void cadastrar() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();
            
            // Criar o prepareStatement
            pstmt = con.prepareStatement("insert into salas (numero, nome, quantidadeLugares, tamanhoPolegadas, tipoTela, acessibilidade) values (?, ?, ?, ?, ?, ?)");
            
            // Setar os parâmetros o prepareStatement
            pstmt.setInt(1, getNumero());
            pstmt.setString(2, getNome());
            pstmt.setInt(3, getQuantidadeLugares());
            pstmt.setFloat(4, getTamanhoPolegadas());
            pstmt.setBoolean(5, isTipoTela());
            pstmt.setString(6, getAcessibilidade());
            
            // Executar o prepareStatement
            pstmt.execute();
        } catch (Exception ex) {
            throw new Exception ("Falha na Classe Salas: "+ex.getMessage());
        } finally {
            pstmt.close();
            con.close();
        }
    }
    public Salas[] consultar() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        ArrayList lista = new ArrayList();
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();
            
            // Criar o prepareStatement
            pstmt = con.prepareStatement("select * from salas");
            // Setar os parâmetros do prepareStatement
            // Executar o prepareStatement
            rs = pstmt.executeQuery();
            // Gerar um array de cliente
            while (rs.next()) {
                Salas s;
                s = new Salas();
                s.setNumero(rs.getInt("numero"));
                s.setNome(rs.getString("nome"));
                s.setQuantidadeLugares(rs.getInt("quantidadeLugares"));
                s.setTamanhoPolegadas(rs.getFloat("tamanhoPolegadas"));
                s.setTipoTela(rs.getBoolean("tipoTela"));
                s.setAcessibilidade(rs.getString("acessibilidade"));
                
                
                lista.add(s);
            }
        } catch (Exception ex) {
            throw new Exception ("Falha na Classe Salas: "+ex.getMessage());
        } finally {
            rs.close();
            pstmt.close();
            con.close();
        }
        return (Salas[])lista.toArray(new Salas[0]);
    }
    public Salas consultarSala(int numero) throws Exception{
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        Salas s= new Salas();
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();
            
            // Criar o prepareStatement
            pstmt = con.prepareStatement("select * from salas where numero=?");
            pstmt.setInt(1, numero);
            
            
            rs = pstmt.executeQuery();
            
            if(rs.next()){
            
            s.setNumero(rs.getInt("numero"));
            s.setNome(rs.getString("nome"));
            s.setQuantidadeLugares(rs.getInt("quantidadeLugares"));
            s.setTamanhoPolegadas(rs.getFloat("tamanhoPolegadas"));
            s.setTipoTela(rs.getBoolean("tipoTela"));
            s.setAcessibilidade(rs.getString("acessibilidade"));
                
            }    
            
        } catch (Exception ex) {
            throw new Exception ("Falha na Classe Salas: "+ex.getMessage());
        } finally {
            rs.close();
            pstmt.close();
            con.close();
        }
        return s;
    }
    public void atualizar() throws Exception{
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();
            
            // Criar o prepareStatement
            pstmt = con.prepareStatement("update salas set nome=?, quantidadeLugares=?, tamanhoPolegadas=?, tipoTela=?, acessibilidade=? where numero=?");
            
            // Setar os parâmetros o prepareStatement
            pstmt.setString(1, getNome());
            pstmt.setInt(2, getQuantidadeLugares());
            pstmt.setFloat(3, getTamanhoPolegadas());
            pstmt.setBoolean(4, isTipoTela());
            pstmt.setString(5, getAcessibilidade());
            pstmt.setInt(6, getNumero());
            // Executar o prepareStatement
            pstmt.execute();
        } catch (Exception ex) {
            throw new Exception ("Falha na Classe Salas: "+ex.getMessage());
        } finally {
            pstmt.close();
            con.close();
        }
    }
    public void excluir() throws Exception {
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            // Conexão com o banco de dados
            con = Conexao.abrirConexao();
            
            // Criar o prepareStatement
            pstmt = con.prepareStatement("delete from salas where numero = ?");
            
            // Setar os parâmetros o prepareStatement
            pstmt.setInt(1, numero);
            
            // Executar o prepareStatement
            pstmt.execute();
        } catch (Exception ex) {
            throw new Exception ("Falha na Classe Salas: "+ex.getMessage());
        } finally {
            pstmt.close();
            con.close();
        }
    }

    /**
     * @return the numero
     */
    public int getNumero() {
        return numero;
    }

    /**
     * @param numero the numero to set
     */
    public void setNumero(int numero) {
        this.numero = numero;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the quantidadeLugares
     */
    public int getQuantidadeLugares() {
        return quantidadeLugares;
    }

    /**
     * @param quantidadeLugares the quantidadeLugares to set
     */
    public void setQuantidadeLugares(int quantidadeLugares) {
        this.quantidadeLugares = quantidadeLugares;
    }

    /**
     * @return the tipoTela
     */
    public boolean isTipoTela() {
        return tipoTela;
    }

    /**
     * @param tipoTela the tipoTela to set
     */
    public void setTipoTela(boolean tipoTela) {
        this.tipoTela = tipoTela;
    }

    /**
     * @return the acessibilidade
     */
    public String getAcessibilidade() {
        return acessibilidade;
    }

    /**
     * @param acessibilidade the acessibilidade to set
     */
    public void setAcessibilidade(String acessibilidade) {
        this.acessibilidade = acessibilidade;
    }

    /**
     * @return the tamanhoPolegadas
     */
    public float getTamanhoPolegadas() {
        return tamanhoPolegadas;
    }

    /**
     * @param tamanhoPolegadas the tamanhoPolegadas to set
     */
    public void setTamanhoPolegadas(float tamanhoPolegadas) {
        this.tamanhoPolegadas = tamanhoPolegadas;
    }
}
